This invention relates to three-dimensional graphics systems and more particularly to apparatus and methods for reducing system bandwidth requirements of three-dimensional graphics systems.
Three-dimensional (3D) computer graphics refer to graphics systems that generate two-dimensional (2D) images from 3D geometric models. These 2D images may then be displayed on computer screens or other raster-based devices. Currently, complex 3D graphics are used in applications such as computer games and are typically reserved for PC or entertainment-based platforms. Such 3D graphics may be unable to run on mobile devices (e.g., cell phones, PDAs, navigation systems) due to hardware limitations such as memory, memory bandwidth, and processing limitations. Memory bandwidth in particular is a major contributor to overall system power in mobile devices. Power consumption is one of the most if not the most significant limitation in the design of many mobile devices.
In general, there are two techniques for rendering a scene containing 3D objects: immediate mode and retained mode. Immediate mode is the most commonly used mode and is what most modem APIs and high-performance GPUs implement. In this mode, a state or primitive is rendered when it is passed from an application to a graphics driver. This architecture typically supports very high throughput, but its main disadvantage is that is uses significant memory bandwidth. This is because every pixel is read or written several times to the frame and depth buffers. Because the frame and depth buffers store information associated with every pixel of a display, they are typically implemented in external graphics memory outside the GPU. Access to this external memory increases system power requirements significantly.
Retained node is a rendering mode where all or a significant portion of the data for a scene is stored before it is rendered. This allows software to perform many different operations on the data prior to rendering it. For example, software could sort all of the vertices of a scene from back to front, eliminating the need for a depth buffer. In general, retained mode imaging provides a higher level of abstraction than immediate mode imaging and may be more amenable to hardware acceleration and caching. This feature may also reduce the amount of work a programmer needs to perform loading, managing, culling, and rendering data and allows a programmer to focus on higher application level functions. Nevertheless, retained mode imaging may also slow performance considerably due to the need to gather, save, and sort data from a scene prior to rendering it.
In view of the foregoing, what is needed is an apparatus and method to provide many of the advantages of retained mode and immediate mode architectures while avoiding many of the disadvantages of each. Further needed is an apparatus and method to dynamically and seamlessly switch between retained and immediate modes of operation in a way that is transparent to an application. Further needed are apparatus and methods to reduce graphics system bandwidth and reduce power consumption when performing 3D rendering.